package com.lnj.orders.service;

import com.lnj.bean.dto.CartDTO;
import com.lnj.bean.dto.ProductDTO;

import java.util.List;

/**
 * 购物车业务逻辑接口
 */
public interface CartService {

    /**
     * 添加商品到购物车或更新商品数量
     * @param userId 用户ID
     * @param productInfo 商品的详细信息 DTO (由前端提供)
     * @param quantity 购买数量
     * @return 添加或更新后的购物车项DTO
     */
    CartDTO addItemToCart(Long userId, ProductDTO productInfo, Integer quantity); // <--- 参数修改

    /**
     * 更新购物车中商品的数量
     * @param userId 用户ID
     * @param cartId 购物车项ID
     * @param quantity 新的数量
     * @return 更新后的购物车项DTO，如果不存在则返回null
     */
    CartDTO updateCartItemQuantity(Long userId, Long cartId, Integer quantity);

    /**
     * 从购物车中删除指定商品
     * @param userId 用户ID
     * @param cartId 购物车项ID
     * @return 是否删除成功
     */
    boolean deleteCartItem(Long userId, Long cartId);

    /**
     * 获取用户购物车中的所有商品列表
     * @param userId 用户ID
     * @return 购物车项DTO列表，包含商品详细信息
     */
    List<CartDTO> getCartItems(Long userId);

    /**
     * 清空用户购物车
     * @param userId 用户ID
     * @return 是否清空成功
     */
    boolean clearCart(Long userId);
}
